<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl">
    <head>
        <meta charset="UTF-8">
        <meta name="author" content="Pieter P">
        <link rel="stylesheet" type="text/css" href="../CSS/main.css">
        <link href='../CSS/roboto.css' rel='stylesheet' type='text/css'>
        <link href='../CSS/icon.css' rel='stylesheet' type='text/css'>
        <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
        <meta name="theme-color" content="#ccc">
        <title>A Beginner's Guide to the ESP8266</title>
    </head>
    <body>
        <nav>
            <div>
                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 48 48" style="position:absolute;top:4px;right: 4px;">
                    <path d="M0 0h48v48h-48z" fill="none"/>
                    <path d="M6 36h36v-4h-36v4zm0-10h36v-4h-36v4zm0-14v4h36v-4h-36z"/>
                </svg>
                <h2>Index</h2>
                <ol>
<li><a href="Chap01 - ESP8266.html">Introduction</a></li>
<li><a href="Chap02 - Hardware.html">Hardware</a></li>
<li><a href="Chap03 - Software.html">Software</a></li>
<li><a href="Chap04 - Microcontroller.html">Microcontroller</a></li>
<li><a href="Chap05 - Network Protocols.html">Network protocols</a></li>
<li><a href="Chap06 - Uploading.html">Uploading</a></li>
<li><a href="Chap07 - Wi-Fi Connections.html">Wi-Fi connections</a></li>
<li><a href="Chap08 - mDNS.html">mDNS</a></li>
<li><a href="Chap09 - Web Server.html">Web servers</a></li>
<li><a href="Chap10 - Simple Web Server.html">Simple web server</a></li>
<li><a href="Chap11 - SPIFFS.html">SPIFFS</a></li>
<li><a href="Chap12 - Uploading to Server.html">Uploading to the server</a></li>
<li><a href="Chap13 - OTA.html">OTA</a></li>
<li><a href="Chap14 - WebSocket.html">WebSocket</a></li>
<li><a href="Chap15 - NTP.html">NTP</a></li>
<li><a href="Chap16 - Data Logging.html">Data logging</a></li>
<li><a href="Chap17 - Email Notifier.html">Email notifier</a></li>
<li><b>Advanced</b></li>
<li><a href="Chap19 - In Conclusion.html">In conclusion</a></li>

                </ol>
                <a href="https://github.com/tttapa/ESP8266/raw/master/A%20Beginner's%20Guide%20to%20the%20ESP8266%20-%20article/PDF/A-Beginner's-Guide-to-the-ESP8266.pdf" title="Download the guide as a PDF document (automatically generated)">Download as PDF</a><br>
                <a href="https://github.com/tttapa/ESP8266/tree/master/Examples" title="Download all example code that's used in this guide">Download examples</a>
            </div>
        </nav>
        <article>

   <h2>Advanced</h2>
   <h3>DNS Captive Portal</h3>
   <div>
        When using the ESP8266 in access point mode, you probably want to redirect users to the right page. You can do this by creating a captive portal, using DNS. It's basically just a DNS server that will convert all host names to the ESP's own IP address. 
   </div>
   <div>
        This technique is also used by open Wi-Fi networks that redirect you to a login page before you can start browsing the internet.
   </div>
   <h3>Wi-Fi configuration</h3>
   <div>
        If you want to be able to change the Wi-Fi connection settings without re-uploading the code, you could take a look at the <a href="https://github.com/tzapu/WiFiManager">WiFiManager library</a> by <i>tzapu</i>. This will try to connect to known networks, but if it fails, it will start a Wi-Fi access point. You can then connect to this access point, open the browser, and pick a network to connect to. The new configuration is saved.
   </div>
   <div>
        The WiFiManager library uses a captive portal to present you with the right Wi-Fi settings page.
   </div>
   <div>
        You could also implement a Wi-Fi manager yourself, or you can just check out the example that comes with the ESP8266 Arduino Core (Examples &gt; DNSServer &gt; CaptivePortalAdvanced).
   </div>
   <h3>I²S</h3>
   <div>
        The ESP8266 has an I²S bus on the RXD pin. It can run at 80MHz, and has DMA (direct memory access), so it's really fast. Its main purpose is to <a href="https://www.youtube.com/watch?v=JsRsNDIBQsM">connect an I²S DAC</a> (Digital to Analog Converter) to have an audio output, but you can use it for other things as well. 
   </div>
   <div>
        For example, CNLohr managed to <a href="https://www.youtube.com/watch?v=bcez5pcp55w">transmit analog television</a>, by connecting an antenna wire to the I²S pin. You can also use it to <a href="https://www.youtube.com/watch?v=6zqGwxqJQnw">control WS2812Bs LEDs</a>. You can even use it to <a href="https://www.youtube.com/watch?v=XKnyAYKP434">communicate over Ethernet</a> (not really useful, and definitely not recommended, but it works).
   </div>
   <div>
        Another great use for the I²S bus is <a href="https://www.youtube.com/watch?v=tURU9UKbYXw&amp;t=0s">outputting data to shift registers</a>. This gives you extra outputs that are reasonably fast, for things like LEDs or stepper motors.
   </div>
   <h3>Other examples</h3>
   <div>
        You can find lots of other examples in the Arduino IDE, I'd recommend to check those out as well.
   </div>
   <h3>YouTube</h3>
   <div>
        There's some great channels on YouTube that do amazing things with the ESP8266. Here's a short list of the ones I'm currently following. If you've got more recommendation, just leave a comment!
   </div>
   <div>
       <ul>
           <li><a href="https://www.youtube.com/channel/UCu7_D0o48KbfhpEohoP7YSQ">Andreas Spiess</a></li>
           <li><a href="https://www.youtube.com/user/CNLohr">CNLohr</a></li>
           <li><a href="https://www.youtube.com/user/acrobotic">Acrobotic</a></li>
           <li><a href="https://www.youtube.com/channel/UCM5GHEXaQKoHH-4cyXiSjbA">Miika Kurkela</a></li>
       </ul>
   </div>
    
<hr>
            <div class="back"><a href="Chap17 - Email Notifier.html">← Previous chapter</a></div>
            <div class="next"><a href="Chap19 - In Conclusion.html">Next chapter →</a></div>
            <div class="backArr"><a href="Chap17 - Email Notifier.html"><i class="material-icons">arrow_back</i></a></div>
            <div class="nextArr"><a href="Chap19 - In Conclusion.html"><i class="material-icons">arrow_forward</i></a></div>
        </article>
    </body>
</html>
